Human languages are rich and complicated and include hundreds of vocabularies with complex grammar and contextual meaning. The same question, thought, meaning, etc. can be expressed in a multiple number of ways. Thus, machine interpretation of human language is an extremely complex task and often the result or action produced does not accurately map or correspond to the user intent.
Machine or software applications or languages generally require data to be input following a specific format or rule. Humans desiring to interact with the machine may become frustrated or unable to communicate effectively due to the rigid rules and the unfamiliarity or lack of knowledge of such rules. Providing users the ability to communicate effectively to an automated system without the need to learn a machine specific language or grammar increases system usability. However, users can become quickly frustrated when automated systems and machine are unable to correctly interpret the user's input, which can produce an unexpected result, an undesired result, and/or no result at all.
Natural language input can be useful for a wide variety of applications, including virtually every software application with which humans interact. Typically, during natural language processing the natural language input is separated into tokens and mapped to one or more actions provided by the software application. Each software application can have a unique set of actions, which are somewhat limited in nature. As a result, it can be both time-consuming and repetitive for software developers to draft code to interpret natural language input and map the input to the appropriate action for each application.
Therefore, to overcome the aforementioned deficiencies, there is a need for an adaptive shared infrastructure that can be easily utilized to enable natural interaction between user(s) and machine system(s). There is also a need for interactive techniques that produce accurate intent-to-action mapping. In addition, there is a need for a natural language interface that learns and/or adapts based upon one or more user input(s), action(s), and/or state(s).